home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / Vk / VkSimpleWindow.z / VkSimpleWindow
Encoding:
Text File  |  2001-04-17  |  45.6 KB  |  1,057 lines

  1.  
  2.  
  3.  
  4. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      VkSimpleWindow - Base class for all top-level windows
  10.  
  11. IIIINNNNHHHHEEEERRRRIIIITTTTSSSS FFFFRRRROOOOMMMM
  12.      VkComponent : VkCallbackObject
  13.  
  14. HHHHEEEEAAAADDDDEEEERRRR FFFFIIIILLLLEEEE
  15.      #include <Vk/VkSimpleWindow.h>
  16.  
  17. PPPPUUUUBBBBLLLLIIIICCCC PPPPRRRROOOOTTTTOOOOCCCCOOOOLLLL SSSSUUUUMMMMMMMMAAAARRRRYYYY
  18.    CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrr////DDDDeeeessssttttrrrruuuuccccttttoooorrrr
  19.               VkSimpleWindow(const char *name,
  20.                              ArgList args = NULL,
  21.                              Cardinal argCount = 0);
  22.               virtual ~VkSimpleWindow();
  23.  
  24.  
  25.    CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrr ---- VVVViiiieeeewwwwKKKKiiiitttt 2222....1111 oooonnnnllllyyyy
  26.               VkSimpleWindow(const char *name,
  27.                              VkScreen *screen,
  28.                              ArgList args = NULL,
  29.                              Cardinal argCount = 0);
  30.  
  31.  
  32.    AAAAddddddddiiiinnnngggg aaaannnndddd RRRReeeemmmmoooovvvviiiinnnngggg VVVViiiieeeewwwwssss
  33.               void addView(Widget w);
  34.               void addView(VkComponent *comp);
  35.               void removeView();
  36.  
  37.  
  38.    MMMMaaaannnniiiippppuuuullllaaaattttiiiinnnngggg WWWWiiiinnnnddddoooowwwwssss
  39.               virtual void open();
  40.               virtual void raise();
  41.               virtual void lower();
  42.               virtual void iconify();
  43.               virtual void show();
  44.               virtual void hide();
  45.  
  46.  
  47.    WWWWiiiinnnnddddoooowwww MMMMaaaannnnaaaaggggeeeerrrr IIIInnnntttteeeerrrrffffaaaacccceeeessss
  48.               const char *getTitle();
  49.               void setTitle(const char *newTitle);
  50.               void setIconName(const char *newName);
  51.               void setClassHint(const char *className);
  52.  
  53.  
  54.    AAAAcccccccceeeessssssss FFFFuuuunnnnccccttttiiiioooonnnnssss
  55.               virtual const char* className();
  56.               int getVisualState()
  57.               Boolean iconic()
  58.               Boolean visible()
  59.               static VkSimpleWindow *getWindow(VkComponent *component);
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  71.  
  72.  
  73.  
  74.    AAAAcccccccceeeessssssss FFFFuuuunnnnccccttttiiiioooonnnnssss ---- VVVViiiieeeewwwwKKKKiiiitttt 2222....1111 oooonnnnllllyyyy
  75.               VkScreen *getScreen();
  76.  
  77.  
  78. SSSSUUUUBBBBCCCCLLLLAAAASSSSSSSS PPPPRRRROOOOTTTTOOOOCCCCOOOOLLLL SSSSUUUUMMMMMMMMAAAARRRRYYYY
  79.    WWWWiiiinnnnddddoooowwww SSSSttttaaaatttteeee
  80.               enum IconState    { OPEN, CLOSED, ICON_UNKNOWN       };
  81.               enum VisibleState { HIDDEN, VISIBLE, VISIBLE_UNKNOWN };
  82.               enum StackingState{ RAISED, LOWERED, STACKING_UNKNOWN};
  83.               IconState      _iconState;
  84.               VisibleState   _visibleState;
  85.               StackingState  _stackingState;
  86.  
  87.  
  88.    WWWWiiiiddddggggeeeetttt AAAAcccccccceeeessssssss
  89.               Widget     _mainWindowWidget;
  90.               virtual Widget     mainWindowWidget() const;
  91.               virtual Widget     viewWidget() const;
  92.               virtual operator Widget () const;
  93.  
  94.  
  95.    AAAAddddddddiiiinnnngggg VVVViiiieeeewwwwssss
  96.               virtual Widget setUpInterface(Widget parent);
  97.  
  98.  
  99.    SSSSuuuubbbbccccllllaaaassssssss HHHHooooooookkkkssss
  100.          virtual void setUpWindowProperties();
  101.          virtual void stateChanged(IconState);
  102.          virtual void handleWmDeleteMessage();
  103.          virtual void handleWmQuitMessage();
  104.          virtual void handleRawEvent(XEvent *event);
  105.          virtual void afterRealizeHook();
  106.  
  107.  
  108. CCCCLLLLAAAASSSSSSSS DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  109.      The VkSimpleWindow class implements a simple top-level window to be used
  110.      by ViewKit applications. The VkSimpleWindow is intended for use when a
  111.      menu bar is not desired.  Instantiating a VkSimpleWindow object creates a
  112.      popup shell widget as a child of the shell supported by an instance of
  113.      VkApp, which must already exist. VkSimpleWindow also creates a Motif
  114.      XmMainWindow widget as a child of the shell.  Applications must create a
  115.      widget to be used as the work area, or "view" contained by the
  116.      XmMainWindow. By default, the XmMainWindow is configured to not display
  117.      scrollbars, and no other areas of the XmMainWindow widget, besides the
  118.      work area, are used.  Applications, or subclasses, can access the main
  119.      window to configure it however they would like. Menus are supported by
  120.      the VkWindow class.
  121.  
  122.      In addition to creating a shell and an XmMainWindow, the VkSimpleWindow
  123.      class registers itself with the application's VkApp instance, sets up
  124.      various properties on the shell window, and provides simple hooks for
  125.      applications that need to handle window manager interactions. For
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  137.  
  138.  
  139.  
  140.      example, all windows support operations to raise, lower, iconify, and
  141.      open windows by calling a single member function.  Each window also
  142.      maintains its current state, so it is straightforward to find out whether
  143.      or a not a given window is iconified, or whether is it is currently
  144.      visible. The class also supports the user's ability to close a window
  145.      using the window manager. (See the handleWmDeleteMessage() and
  146.      handleWmQuitMessage() methods.)
  147.  
  148.      The VkSimpleWindow class works together with VkApp to provide
  149.      application-wide services such as displaying cursors in all windows,
  150.      entering busy states, and manipulating all windows in an application.
  151.  
  152.    AAAAddddddddiiiinnnngggg aaaa VVVViiiieeeewwww
  153.      By itself, the VkSimpleWindow class simply provides a framework for a
  154.      window. The contents of the window must be defined by the application.
  155.      This can be done in one of several ways. In most cases, it is best to
  156.      define a subclass of VkSimpleWindow in which to add the view, along with
  157.      handling other supporting operations and data. In some cases, it may be
  158.      useful to add a view directly to a VkSimpleWindow instance, without
  159.      deriving a new class.
  160.  
  161.    QQQQuuuuiiiicccckkkkHHHHeeeellllpppp
  162.      _Q_u_i_c_k_H_e_l_p is a facility that displays a (presumably helpful) string when
  163.      the pointer enters a widget.  Help can be displayed in a message line at
  164.      the bottom of the application, in a small window that pops up next to the
  165.      pointer (i.e., "balloon help" or "popup help"), or both ways.  Each way
  166.      can have its own help text -- perhaps a brief phrase for popup help, and
  167.      a more detailed message for the message line.
  168.  
  169.      QuickHelp availability is controlled by the resources _s_h_o_w_H_e_l_p,
  170.      _s_h_o_w_P_o_p_u_p_H_e_l_p, and _s_h_o_w_M_s_g_L_i_n_e_H_e_l_p.  These resources must be set when the
  171.      VkSimpleWindow is created.  QuickHelp cannot be created later, though the
  172.      programmatic interface allows it to be activated and de-activated.
  173.  
  174.           If _s_h_o_w_H_e_l_p is FFFFAAAALLLLSSSSEEEE, then no QuickHelp will be shown.  This
  175.           provides an easy way to enable or disable the entire QuickHelp
  176.           system.
  177.  
  178.           If _s_h_o_w_P_o_p_u_p_H_e_l_p is FFFFAAAALLLLSSSSEEEE, there will be no popup help.  If it is
  179.           TTTTRRRRUUUUEEEE, there will be popup help if, and only if, _s_h_o_w_H_e_l_p is also
  180.           TTTTRRRRUUUUEEEE.  Popup help is a good way to solve the problem of ensuring
  181.           that a user understands what a button displaying a pixmap is really
  182.           for.
  183.  
  184.           If _s_h_o_w_M_s_g_L_i_n_e_H_e_l_p is FFFFAAAALLLLSSSSEEEE, there will be no message line help.  If
  185.           it is TTTTRRRRUUUUEEEE, there will be message line help if, and only if,
  186.           _s_h_o_w_H_e_l_p is also TTTTRRRRUUUUEEEE.  Space will be allocated for message line
  187.           help at the bottom of the window only if message line help is
  188.           enabled.
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  203.  
  204.  
  205.  
  206.      QuickHelp usability includes getting balloons promptly when you want
  207.      them, but not getting them when you do not want them.  This is a DWIM (Do
  208.      What I Mean) problem, and so has no perfect solution.  In an attempt to
  209.      come as close as we can, QuickHelp has a several timers.  These timings
  210.      greatly affect the usability of QuickHelp, so you should not generally
  211.      alter them.  However, if you do not like the default timings, you can
  212.      adjust them to suit yourself.
  213.  
  214.      A full discussion of these timers is beyond the scope of this man page,
  215.      but here are the ones that are available:
  216.  
  217.           _h_e_l_p_T_e_x_t_B_r_o_w_s_e_C_a_n_c_e_l_T_i_m_e -- the length of time after leaving a
  218.           widget before browse mode is canceled.
  219.  
  220.           _h_e_l_p_T_e_x_t_B_r_o_w_s_e_W_a_i_t_T_i_m_e -- the delay after entering a widget, when in
  221.           browse mode, before the QuickHelp balloon will be posted.
  222.  
  223.           _h_e_l_p_T_e_x_t_B_r_o_w_s_e_V_e_l_o_c_i_t_y -- the velocity below which a QuickHelp
  224.           balloon should be posted as you browse, and above which you are just
  225.           in transit.  If you are just in transit, then no balloon will be
  226.           posted.
  227.  
  228.           _h_e_l_p_T_e_x_t_W_a_i_t_T_i_m_e -- the delay after entering a widget, when not in
  229.           browse mode, before the QuickHelp balloon will be posted.
  230.  
  231.           _h_e_l_p_T_e_x_t_T_i_m_e_U_p -- the length of time a QuickHelp balloon will remain
  232.           posted.
  233.  
  234.      There are some miscellaneous resources:
  235.  
  236.           _h_e_l_p_T_e_x_t_I_n_s_e_n_s_i_t_i_v_e -- controls whether or not QuickHelp is given
  237.           when entering insensitive widgets.
  238.  
  239.           _s_m_a_l_l_W_i_d_g_e_t -- this is the size of the minor dimension of a "wide"
  240.           of a "tall" widget.  This is used to determine whether a QuickHelp
  241.           balloon goes below a widget, or whether it should be posted beside
  242.           the widget.  For example, if you have a vertical scrollbar that has
  243.           QuickHelp, you would probably want QuickHelp to the right of the
  244.           scrollbar, not below it.
  245.  
  246.      There are two resources intended for developers and for debugging, but
  247.      which may also be useful to some end-users.
  248.  
  249.           _d_u_m_p_T_r_e_e prints the name and class for each of the widgets in the
  250.           widget tree when the VkSimpleWindow is created.  This can be useful
  251.           as a starting point for creating the QuickHelp text for each widget.
  252.  
  253.           NOTE: A common error is to forget that this cannot dump any widget
  254.           that is not yet created.  For example, unless you have disabled it,
  255.           ViewKit created menus later (in a workProc).  That means they will
  256.           not get included in the widget tree that is dumped.
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  269.  
  270.  
  271.  
  272.           _s_h_o_w_W_i_d_g_e_t_I_n_f_o causes QuickHelp to display the widget name, rather
  273.           than any QuickHelp text.  The information displayed this way may be
  274.           expanded in a future release.  This can be useful when trying to
  275.           figure out just what a widget is called so you can set a resource
  276.           for it.
  277.  
  278.      And, finally, there are two per-widget resources that provide the actual
  279.      help strings, _m_s_g_L_i_n_e_H_e_l_p_T_e_x_t and _p_o_p_u_p_H_e_l_p_T_e_x_t.  Both of these are of
  280.      resource class _Q_u_i_c_k_H_e_l_p_T_e_x_t.  If any widget does not have one of these
  281.      resources set, it will not get that kind of help, regardless of any
  282.      global settings.
  283.  
  284.      There is also a programmatic interface to QuickHelp.  This interface is
  285.      still experimental, so it may change in incompatible ways in a future
  286.      release.  When it becomes a supported permanent ABI, it will be
  287.      documented here.  If you need to use it in the meantime, see the header
  288.      files and the QuickHelp ViewKit demo program for information.
  289.  
  290.    DDDDeeeerrrriiiivvvviiiinnnngggg SSSSuuuubbbbccccllllaaaasssssssseeeessss
  291.      It is best to add a view (or work area) in which to display an
  292.      application-specific interface in a subclass. The view can be added in
  293.      one of two ways. The first way is to create a widget, or a component in
  294.      the subclass constructor, and to call addView(). A VkSimpleWindow
  295.      supports only a single child widget.
  296.  
  297.      The following example derived class adds a Motif XmLabel widget as a
  298.      view.  The XmLabel widget is created as a child of the XmMainWindow
  299.      (accessed through the mainWindowWidget() member function inherited from
  300.      VkSimpleWindow). More complex examples might create entire widget
  301.      hierarchies. Real examples also seldom declare the constructor inline, as
  302.      shown here.
  303.  
  304.  
  305.            #include <Vk/VkApp.h>
  306.            #include <Vk/VkSimpleWindow.h>
  307.            #include <Xm/Label.h>
  308.  
  309.            class SampleWindow: public VkSimpleWindow {
  310.  
  311.             public:
  312.  
  313.               SampleWindow ( const char *name ) :
  314.                        VkSimpleWindow ( name )
  315.               {
  316.                   Widget label =  XmCreateLabel ( mainWindowWidget(),
  317.                                                   "sample", NULL, 0 );
  318.  
  319.                   addView(label);
  320.                }
  321.            };
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  335.  
  336.  
  337.  
  338.      It is recommended that applications be designed so that the view added to
  339.      a VkSimple window is a component. (See VkComponent(3X).) This approach
  340.      works the same as that demonstrated above. For example, the following
  341.      example creates a VkRadioBox component and installs several items. (See
  342.      VkRadioBox(3X).)
  343.  
  344.  
  345.            #include <Vk/VkApp.h>
  346.            #include <Vk/VkSimpleWindow.h>
  347.            #include <Vk/VkRadioBox.h>
  348.  
  349.            class SampleWindow: public VkSimpleWindow {
  350.  
  351.             public:
  352.  
  353.               SampleWindow ( const char *name ) :
  354.                        VkSimpleWindow ( name )
  355.               {
  356.                   VkRadioBox *rb = new VkRadioBox("check",
  357.                                                    mainWindowWidget());
  358.  
  359.                   rb->addItem("one");
  360.                   rb->addItem("two");
  361.                   rb->addItem("three");
  362.                   rb->addItem("four");
  363.  
  364.                   addView(rb);
  365.                }
  366.            };
  367.  
  368.  
  369.  
  370.      Some applications may wish to delay the creation of an interface until
  371.      the window is ready to be displayed. In this case, a subclass of
  372.      VkSimpleWindow can be created without adding a view in the constructor.
  373.      Instead, a virtual method, setUpInterface() can be defined. This method
  374.      is called when the component is displayed (as a result of a call to
  375.      show()) if no view has been added. This method supplies the main window
  376.      widget to be used as the parent of the window's widget hierarchy as an
  377.      argument. The setUpInterface() method is expected to return a widget to
  378.      be added as a view.  Using this approach,the above example can be written
  379.      as follows:
  380.  
  381.  
  382.            #include <Vk/VkApp.h>
  383.            #include <Vk/VkSimpleWindow.h>
  384.            #include <Vk/VkRadioBox.h>
  385.  
  386.            class SampleWindow: public VkSimpleWindow {
  387.              protected:
  388.                Widget setUpInterface(Widget parent)
  389.                {
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  401.  
  402.  
  403.  
  404.                   VkRadioBox *rb = new VkRadioBox("check", parent);
  405.  
  406.                   rb->addItem("one");
  407.                   rb->addItem("two");
  408.                   rb->addItem("three");
  409.                   rb->addItem("four");
  410.  
  411.                   return (rb->baseWidget());
  412.                   // Could also be: return ((Widget) *rb);
  413.                }
  414.  
  415.             public:
  416.  
  417.               SampleWindow ( const char *name ) :
  418.                             VkSimpleWindow ( name ) {};
  419.            };
  420.  
  421.  
  422.  
  423. FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNNSSSS
  424.    VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww(((())))
  425.            VkSimpleWindow(const char *name,
  426.                           ArgList argList = NULL,
  427.                           Cardinal argCount = 0);
  428.  
  429.  
  430.           Create a VkSimpleWindow object. This function creates a popup shell
  431.           and a Motif XmMainWindow widget, and sets up various properties and
  432.           callbacks needed for window manager interaction. The window is also
  433.           registered with the current application object.
  434.  
  435.    VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww(((()))) ---- VVVViiiieeeewwwwKKKKiiiitttt 2222....1111 oooonnnnllllyyyy
  436.            VkSimpleWindow(const char *name,
  437.                           VkScreen   *screen,
  438.                           ArgList argList = NULL,
  439.                           Cardinal argCount = 0);
  440.  
  441.  
  442.           Create a VkSimpleWindow object on the specified VkScreen. This
  443.           function creates a popup shell and a Motif XmMainWindow widget, and
  444.           sets up various properties and callbacks needed for window manager
  445.           interaction. The window is also registered with the specified
  446.           VkScreen object.
  447.  
  448.    ~~~~VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww(((())))
  449.            virtual ~VkSimpleWindow();
  450.  
  451.  
  452.           The destructor deletes any privately allocated data and removes the
  453.           window from the current application's list of windows. The
  454.           VkComponent destructor destroys the widgets used in this class.
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  467.  
  468.  
  469.  
  470.    ggggeeeettttSSSSccccrrrreeeeeeeennnn(((()))) ---- VVVViiiieeeewwwwKKKKiiiitttt 2222....1111 oooonnnnllllyyyy
  471.            VkScreen *getScreen();
  472.  
  473.  
  474.           Returns the VkScreen object associated with this window.
  475.  
  476.    aaaaddddddddVVVViiiieeeewwww(((())))
  477.            void addView(Widget w);
  478.            void addView(VkComponent *comp);
  479.  
  480.  
  481.           Add a widget or a component as the window's work area, or view.
  482.           There can be only one view at any given time. However, views can be
  483.           changed by removing a view and then adding a new view. (See also
  484.           VkDeck(3X), which supports stacks of widgets or components.)
  485.  
  486.    rrrreeeemmmmoooovvvveeeeVVVViiiieeeewwww(((())))
  487.            void removeView();
  488.  
  489.  
  490.           Remove the current view from the screen. This function should not be
  491.           called unless a view has been previously added. The view (Widget or
  492.           component) is not destroyed.
  493.  
  494.    ooooppppeeeennnn(((())))
  495.            virtual void open();
  496.  
  497.  
  498.           If the VkSimpleWindow object is in an iconified state, the window is
  499.           changed to an un-iconified state.  This does not affect whether or
  500.           not the window is actually visible.  It may still be _h_i_d_d_e_n, or not
  501.           hidden but another window may be on top of it.  See _W_I_N_D_O_W _S_T_A_T_E_S,
  502.           below.
  503.  
  504.    rrrraaaaiiiisssseeee(((())))
  505.            virtual void raise();
  506.  
  507.  
  508.           Raise the window to the top of the screen.
  509.  
  510.    lllloooowwwweeeerrrr(((())))
  511.            virtual void lower();
  512.  
  513.  
  514.           Lower the window to the bottom of the screen.
  515.  
  516.    iiiiccccoooonnnniiiiffffyyyy(((())))
  517.            virtual void iconify();
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  533.  
  534.  
  535.  
  536.           If the VkSimpleWindow object is in a normal state, the window is
  537.           changed to an iconified state.  This does not affect whether or not
  538.           the icon is actually visible.  It may still be _h_i_d_d_e_n, or not hidden
  539.           but another window may be on top of it.  See _W_I_N_D_O_W _S_T_A_T_E_S, below.
  540.  
  541.    sssshhhhoooowwww(((())))
  542.            virtual void show();
  543.  
  544.  
  545.           If a window is currently in a hidden state, display the window.
  546.           This does not affect whether or not the window is iconic.  It also
  547.           does not affect whether or not the window is actually visible -
  548.           another window may be on top of it.  See _W_I_N_D_O_W _S_T_A_T_E_S, below.
  549.  
  550.    hhhhiiiiddddeeee(((())))
  551.            virtual void hide();
  552.  
  553.  
  554.           If the window or icon is currently visible, it is removed from the
  555.           screen.  This does not affect whether or not the window is
  556.           considered iconic.  See _W_I_N_D_O_W _S_T_A_T_E_S, below.
  557.  
  558.    ggggeeeettttTTTTiiiittttlllleeee
  559.            const char *getTitle();
  560.  
  561.  
  562.           Return the current title of the window as a string.
  563.  
  564.    sssseeeettttTTTTiiiittttlllleeee
  565.            void setTitle(const char *newTitle);
  566.  
  567.  
  568.           Set the current title of the window. This string is treated first as
  569.           the name of a resource that indicates a title. If no such resource
  570.           is found, the string is used as the title itself. This allows
  571.           applications to dynamically change a window title, without
  572.           necessarily hard-coding the exact title names in the application
  573.           code.
  574.  
  575.    sssseeeettttIIIIccccoooonnnnNNNNaaaammmmeeee
  576.            void setIconName(const char *newName);
  577.  
  578.  
  579.           Set the current title of the window's icon. This string is treated
  580.           first as the name of a resource that indicates a title. If no such
  581.           resource is found, the string is used as the icon title itself. This
  582.           allows applications to dynamically change an icon's title, without
  583.           necessarily hard-coding the exact icon names in the application
  584.           code.
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  599.  
  600.  
  601.  
  602.    sssseeeettttCCCCllllaaaassssssssHHHHiiiinnnnttttssss(((())))
  603.            void setClassHint(const char *className);
  604.  
  605.  
  606.           Changes the value of the window manager class hint stored on this
  607.           window.
  608.  
  609.  
  610.    ccccllllaaaassssssssNNNNaaaammmmeeee
  611.               virtual const char* className();
  612.  
  613.  
  614.           The class name of VkSimpleWindow is "VkSimpleWindow".
  615.  
  616.  
  617.    ggggeeeettttVVVViiiissssuuuuaaaallllSSSSttttaaaatttteeee
  618.               int getVisualState();
  619.  
  620.  
  621.           This returns the X11 window state, as specified by the ICCCM
  622.           (sections 4.1.2.4, 4.1.4), with one extension.  The ICCCM specifies
  623.           states _W_i_t_h_d_r_a_w_n_S_t_a_t_e, _N_o_r_m_a_l_S_t_a_t_e, and _I_c_o_n_i_c_S_t_a_t_e.  In actual
  624.           fact, when an unmapped window is mapped, it may come back as either
  625.           _N_o_r_m_a_l or _I_c_o_n_i_c.  In recognition of this ViewKit adds the
  626.           corresponding states:
  627.  
  628.      WWWWiiiitttthhhhddddrrrraaaawwwwnnnnNNNNoooorrrrmmmmaaaallllSSSSttttaaaatttteeee
  629.           is the same as _W_i_t_h_d_r_a_w_n_S_t_a_t_e.  Both mean that the window will be in
  630.           _N_o_r_m_a_l_S_t_a_t_e when it gets mapped.
  631.  
  632.      WWWWiiiitttthhhhddddrrrraaaawwwwnnnnIIIIccccoooonnnniiiiccccSSSSttttaaaatttteeee
  633.           is new.  It means that the window will be in _I_c_o_n_i_c_S_t_a_t_e when it
  634.           gets mapped.
  635.  
  636.  
  637.    iiiiccccoooonnnniiiicccc
  638.               Boolean iconic()
  639.  
  640.  
  641.           Returns TRUE if the window is currently in an iconic state.  Returns
  642.           FALSE if the window is currently in a normalized state.  This is
  643.           unrelated to whether or not the window or icon is actually visible.
  644.           It may still be _h_i_d_d_e_n, or not hidden but another window may be on
  645.           top of it.  See _W_I_N_D_O_W _S_T_A_T_E_S, below.
  646.  
  647.    vvvviiiissssiiiibbbblllleeee(((())))
  648.               Boolean visible()
  649.  
  650.  
  651.           Returns TRUE if the window is not hidden (i.e., the window or icon
  652.           is mapped).  This is unrelated to whether or not the window or icon
  653.           is actually visible on the screen.  It may still be _h_i_d_d_e_n, or not
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  665.  
  666.  
  667.  
  668.           hidden but another window may be on top of it.  See _W_I_N_D_O_W _S_T_A_T_E_S,
  669.           below.
  670.  
  671.    ggggeeeettttWWWWiiiinnnnddddoooowwww(((())))
  672.            static VkSimpleWindow *getWindow(VkComponent *component);
  673.  
  674.  
  675.           Returns the VkSimpleWindow object (or subclass) that contains the
  676.           given VkComponent.  This allows components to operate on the window
  677.           in which they are contained without a hard coded connection between
  678.           the window and the component.
  679.  
  680.    WWWWiiiinnnnddddoooowwww SSSSttttaaaatttteeee VVVVaaaalllluuuueeeessss
  681.               enum IconState     { OPEN, CLOSED, ICON_UNKNOWN        };
  682.               enum VisibleState  { HIDDEN, VISIBLE, VISIBLE_UNKNOWN  };
  683.               enum StackingState { RAISED, LOWERED, STACKING_UNKNOWN };
  684.  
  685.  
  686.           These values are used to track the window's state. These values are
  687.           available to subclasses only.
  688.  
  689.    ____iiiiccccoooonnnnSSSSttttaaaatttteeee
  690.               IconState      _iconState;
  691.  
  692.  
  693.           This member is kept up-to-date with the current state of the window,
  694.           which will be one of OPEN, CLOSED, or ICON_UNKNOWN.  This state is
  695.           independent of the  value of other states.
  696.  
  697.    ____vvvviiiissssiiiibbbblllleeeeSSSSttttaaaatttteeee
  698.               VisibleState   _visibleState;
  699.  
  700.  
  701.           This member will be set to HIDDEN if the window is not visible and
  702.           VISIBLE if it is. This state is independent of the value of other
  703.           states.
  704.  
  705.    ____ssssttttaaaacccckkkkiiiinnnnggggSSSSttttaaaatttteeee
  706.               StackingState  _stackingState;
  707.  
  708.  
  709.           This member will be set to RAISED if the window has been raised to
  710.           the top of other windows, and LOWERED if it has been lowered below
  711.           its siblings.
  712.  
  713.    mmmmaaaaiiiinnnnWWWWiiiinnnnddddoooowwwwWWWWiiiiddddggggeeeetttt
  714.               virtual Widget     mainWindowWidget() const;
  715.  
  716.  
  717.           This function returns the XmMainWindow widget created by the
  718.           VkSimpleWindow.
  719.  
  720.  
  721.  
  722.  
  723.                                                                        PPPPaaaaggggeeee 11111111
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  731.  
  732.  
  733.  
  734.    vvvviiiieeeewwwwWWWWiiiiddddggggeeeetttt
  735.               virtual Widget     viewWidget() const;
  736.  
  737.  
  738.           Returns the widget currently installed as a view.
  739.  
  740.    sssseeeettttUUUUppppIIIInnnntttteeeerrrrffffaaaacccceeee
  741.               virtual Widget setUpInterface(Widget parent);
  742.  
  743.  
  744.           If no view has been added by the time a VkSimpleWindow needs to
  745.           display itself (because show() has been called), setUpInterface() is
  746.           called. This function is expected to create and return a widget as a
  747.           child of the specified parent. Using this function has the same
  748.           effect as calling addView, but the widgets are not created until the
  749.           window is about to be displayed.
  750.  
  751.    sssseeeettttUUUUppppWWWWiiiinnnnddddoooowwwwPPPPrrrrooooppppeeeerrrrttttiiiieeeessss
  752.               virtual void setUpWindowProperties();
  753.  
  754.  
  755.           This function is called after a VkSimpleWindow object's shell widget
  756.           is realized. It initializes the properties involved in the window
  757.           manager's WM_DELETE protocol. Derived classes that wish to store
  758.           other properties on the window can override this function and
  759.           perform additional actions. If this function is overridden, the
  760.           function belonging to the base class should be called from the
  761.           derived class function.
  762.  
  763.    ssssttttaaaatttteeeeCCCChhhhaaaannnnggggeeeedddd
  764.               virtual void stateChanged(IconState);
  765.  
  766.  
  767.           This function is called when the window's iconic state changes.
  768.           Derived classes that need to know when these transitions occur can
  769.           override this function. Because this function is responsible for
  770.           maintaining the objects state information, functions defined by a
  771.           derived class should always call the base class function before
  772.           performing any desired additional operations.
  773.  
  774.    hhhhaaaannnnddddlllleeeeWWWWmmmmDDDDeeeelllleeeetttteeeeMMMMeeeessssssssaaaaggggeeee(((())))
  775.               virtual void handleWmDeleteMessage();
  776.  
  777.  
  778.           This function is called when the user closes a window using the
  779.           window manager. (For example, the Motif Window manager, mwm,
  780.           supports a Close menu entry for each window.) The default action of
  781.           this function is to delete the object. Derived class that wish to
  782.           change this behavior can override this function. Derived classes
  783.           that simply wish to perform additional actions before the object is
  784.           deleted can override the function, perform the required actions, and
  785.           then call the base class function.
  786.  
  787.  
  788.  
  789.                                                                        PPPPaaaaggggeeee 11112222
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  797.  
  798.  
  799.  
  800.    hhhhaaaannnnddddlllleeeeWWWWmmmmQQQQuuuuiiiittttMMMMeeeessssssssaaaaggggeeee(((())))
  801.               virtual void handleWmQuitMessage();
  802.  
  803.  
  804.           This function is called when the user quits an application using the
  805.           4Dwm window manager extension to the ICCCM protocol.  The default
  806.           action of this function is to call VkApp::quitYourself().  Derived
  807.           class that wish to change this behavior can override this function.
  808.           Derived classes that simply wish to perform additional actions
  809.           before the object is deleted can override the function, perform the
  810.           required actions, and then call the base class function.
  811.  
  812.    hhhhaaaannnnddddlllleeeeRRRRaaaawwwwEEEEvvvveeeennnntttt
  813.               virtual void handleRawEvent(XEvent *event);
  814.  
  815.  
  816.           Some events that may be received by an application are not
  817.           dispatched by the Xt dispatch mechanism. For example, propertyNotify
  818.           on windows other than Motif widgets cannot be dispatched. When such
  819.           an event is received by the VkApp event loop, the event is
  820.           dispatched to all top-level windows by calling each window's
  821.           handleRawEvent() member function. The default function is empty.
  822.           Derived classes that wish to handle the event should override this
  823.           function.
  824.  
  825.    aaaafffftttteeeerrrrRRRReeeeaaaalllliiiizzzzeeeeHHHHooooooookkkk
  826.               virtual void afterRealizeHook();
  827.  
  828.  
  829.           This function is called immediately after a VkSimpleWindow object's
  830.           shell widget is realized. Derived classes that need to perform
  831.           certain actions only after a window exists can override this
  832.           function.
  833.  
  834.  
  835. WWWWIIIINNNNDDDDOOOOWWWW SSSSTTTTAAAATTTTEEEESSSS
  836.      In X11, there are three possible window states:
  837.  
  838.      NNNNoooorrrrmmmmaaaallllSSSSttttaaaatttteeee
  839.           Only the application's _V_k_S_i_m_p_l_e_W_i_n_d_o_w is mapped.
  840.  
  841.      IIIIccccoooonnnniiiiccccSSSSttttaaaatttteeee
  842.           Only the application's icon is mapped.
  843.  
  844.      WWWWiiiitttthhhhddddrrrraaaawwwwnnnnSSSSttttaaaatttteeee
  845.           Neither the application's window nor its icon is mapped.
  846.  
  847.      To clarify two possible meanings of _W_i_t_h_d_r_a_w_n_S_t_a_t_e, VkSimpleWindow adds
  848.      the following states:
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.                                                                        PPPPaaaaggggeeee 11113333
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  863.  
  864.  
  865.  
  866.      WWWWiiiitttthhhhddddrrrraaaawwwwnnnnNNNNoooorrrrmmmmaaaallllSSSSttttaaaatttteeee
  867.           Is the same as _W_i_t_h_d_r_a_w_n_S_t_a_t_e.  Both mean that when the window is
  868.           mapped, it will be in _N_o_r_m_a_l_S_t_a_t_e.
  869.  
  870.      WWWWiiiitttthhhhddddrrrraaaawwwwnnnnIIIIccccoooonnnniiiiccccSSSSttttaaaatttteeee
  871.           Means that when the window is mapped, it will be in _I_c_o_n_i_c_S_t_a_t_e.
  872.  
  873.      A window's state is unrelated to whether or not the actual window is in
  874.      fact visible on the screen.  A window can be in either _N_o_r_m_a_l_S_t_a_t_e or
  875.      _I_c_o_n_i_c_S_t_a_t_e, and still not be visible if it is obscured by another window
  876.      on top of it.
  877.  
  878.      A window starts out in _W_i_t_h_d_r_a_w_n_S_t_a_t_e (ICCCM 4.1.1, 4.1.2.4).  The window
  879.      manager, possibly cooperating with a session manager, then transitions
  880.      the window to either _N_o_r_m_a_l_S_t_a_t_e or _I_c_o_n_i_c_S_t_a_t_e.  This means that there
  881.      is no way for an application to know in advance what the initial state of
  882.      a window will be.  The application must either:
  883.  
  884.      +o    wait until the window is no longer in _W_i_t_h_d_r_a_w_n_S_t_a_t_e and then see
  885.           what the actual state is.
  886.  
  887.      +o    force the initial state.  Because it defeats session management,
  888.           this is generally a Bad Thing to do.
  889.  
  890.      VkSimpleWindow allows independent control over the iconic state of a
  891.      window and whether or not it is actually mapped.  These aspects are
  892.      independent of each other.
  893.  
  894.      MMMMaaaappppppppiiiinnnngggg aaaa wwwwiiiinnnnddddoooowwww
  895.           A window must be mapped to be visible.  If mapped, the application's
  896.           window or icon  will actually be visible only if it is within the
  897.           screen area and not obscured by another window.  _s_h_o_w() maps the
  898.           window or icon, _h_i_d_e() unmaps it, and _v_i_s_u_a_l() tells whether or not
  899.           it is mapped.
  900.  
  901.      IIIIccccoooonnnniiiiffffyyyyiiiinnnngggg aaaa wwwwiiiinnnnddddoooowwww
  902.           An application is visually represented by either its window or its
  903.           icon.  If it is represented by its icon, the application's actual
  904.           window will be unmapped, and therefore invisible.  Whether or not
  905.           the icon is visible is determined by whether it is mapped.  This
  906.           means that _i_c_o_n_i_c() does not tell anything about whether or not the
  907.           actual window or icon is visible.  _I_c_o_n_i_f_y() iconifies a window,
  908.           _o_p_e_n() un-iconifies it, and _i_c_o_n_i_c() tells whether or not the window
  909.           is iconified.
  910.  
  911.      ggggeeeettttVVVViiiissssuuuuaaaallllSSSSttttaaaatttteeee(((())))
  912.           allows an application to tell, with a single call, which state the
  913.           application is in:  _W_i_t_h_d_r_a_w_n_N_o_r_m_a_l_S_t_a_t_e, _W_i_t_h_d_r_a_w_n_I_c_o_n_i_c_S_t_a_t_e,
  914.           _N_o_r_m_a_l_S_t_a_t_e, or _I_c_o_n_i_c_S_t_a_t_e.
  915.  
  916.           If the window is in _N_o_r_m_a_l_S_t_a_t_e, its window is visible.  If the
  917.           window is in _I_c_o_n_i_c_S_t_a_t_e, its icon is visible.
  918.  
  919.  
  920.  
  921.                                                                        PPPPaaaaggggeeee 11114444
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  929.  
  930.  
  931.  
  932.      OOOOppppttttiiiimmmmaaaallll OOOOrrrrddddeeeerrrr ooooffff OOOOppppeeeerrrraaaattttiiiioooonnnnssss
  933.           The application should eliminate unnecessary window mapping and
  934.           unmapping, because they cause wasteful X server traffic, and because
  935.           they may cause visible flashing on the screen.  To do so:
  936.  
  937.      1)   If the end result of a series of operations is to be hidden, and if
  938.           the window is currently visible, give the _h_i_d_e() call first.
  939.  
  940.      2)   If the end result of a series of operations is to be visible, and if
  941.           the window is currently hidden, give the _s_h_o_w() call last.
  942.  
  943.      X11 states map into the ViewKit states as follows:
  944.  
  945.      IIIIccccoooonnnniiiiccccSSSSttttaaaatttteeee               _v_i_s_i_b_l_e() &&   _i_c_o_n_i_c()
  946.  
  947.      NNNNoooorrrrmmmmaaaallllSSSSttttaaaatttteeee               _v_i_s_i_b_l_e() &&  !_i_c_o_n_i_c()
  948.  
  949.      WWWWiiiitttthhhhddddrrrraaaawwwwnnnnIIIIccccoooonnnniiiiccccSSSSttttaaaatttteeee     !_v_i_s_i_b_l_e() &&   _i_c_o_n_i_c()
  950.  
  951.      WWWWiiiitttthhhhddddrrrraaaawwwwnnnnNNNNoooorrrrmmmmaaaallllSSSSttttaaaatttteeee     !_v_i_s_i_b_l_e() &&  !_i_c_o_n_i_c()
  952.  
  953.      To explore window states, see the demo program
  954.      /_u_s_r/_s_h_a_r_e/_s_r_c/_V_i_e_w_K_i_t/_B_a_s_i_c/_w_i_n_d_o_w_S_t_a_t_e.
  955.  
  956.  
  957. IIIINNNNHHHHEEEERRRRIIIITTTTEEEEDDDD MMMMEEEEMMMMBBBBEEEERRRR FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
  958.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm VVVVkkkkCCCCoooommmmppppoooonnnneeeennnntttt
  959.           installDestroyHandler(), removeDestroyHandler(), widgetDestroyed(),
  960.           setDefaultResources(), getResources(), manage(), unmanage(),
  961.           baseWidget(), okToQuit(), _name, _baseWidget, _w, deleteCallback
  962.  
  963.  
  964.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm VVVVkkkkCCCCaaaallllllllbbbbaaaacccckkkkOOOObbbbjjjjeeeecccctttt
  965.           callCallbacks(), addCallback(), removeCallback(),
  966.           removeAllCallbacks()
  967.  
  968.  
  969. KKKKNNNNOOOOWWWWNNNN DDDDEEEERRRRIIIIVVVVEEEEDDDD CCCCLLLLAAAASSSSSSSSEEEESSSS
  970.      VkWindow, VkForkDoc, VkMsgWindow
  971.  
  972. CCCCLLLLAAAASSSSSSSSEEEESSSS UUUUSSSSEEEEDDDD BBBBYYYY TTTTHHHHIIIISSSS CCCCLLLLAAAASSSSSSSS
  973.      VkApp, VkComponent
  974.  
  975. KKKKNNNNOOOOWWWWNNNN CCCCLLLLAAAASSSSSSSSEEEESSSS TTTTHHHHAAAATTTT UUUUSSSSEEEE TTTTHHHHIIIISSSS CCCCLLLLAAAASSSSSSSS
  976.      VkApp, VkDialogManager, VkMsgApp
  977.  
  978. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  979.      VkComponent, VkApp, VkComponent, VkDialogManager, VkMsgApp
  980.      _V_i_e_w_K_i_t _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e
  981.      _T_h_e _X _W_i_n_d_o_w _S_y_s_t_e_m, DEC Press, Bob Scheifler and Jim Gettys
  982.      _T_h_e _X _W_i_n_d_o_w _S_y_s_t_e_m _T_o_o_l_k_i_t, DEC Press, Paul Asente and Ralph Swick
  983.      _T_h_e _O_S_F/_M_o_t_i_f _P_r_o_g_r_a_m_m_e_r_s _R_e_f_e_r_e_n_c_e, Prentice Hall, OSF
  984.  
  985.  
  986.  
  987.                                                                        PPPPaaaaggggeeee 11115555
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994. VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))                                          VVVVkkkkSSSSiiiimmmmpppplllleeeeWWWWiiiinnnnddddoooowwww((((3333xxxx))))
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.                                                                        PPPPaaaaggggeeee 11116666
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.